| Предыдущая | Следующая | Оглавление | |
Flash Player 5.
for(variableIterantinobject){statement(s);}
variableIterant Имя переменной, выступающей в роли итеранта (iterant). Этой переменной последовательно присваивается каждое свойство объекта или элемента массива.
object Имя итерируемого объекта.
statement(s) Инструкции, выполняемые при каждой итерации.
Ничего.
Выражение; производит итерации над свойствами объекта или элементов массива и выполняет statement для каждого свойства или элемента. Методы объекта действием for..in не перечисляются.
Некоторые свойства не могут быть перечислены действием for..in. Например, не перечисляются свойства мувиклипа, такие как _x и _y. Во внешних файлах классов статические члены не перечисляются, в отличие от членов экземпляра.
Выражение for..in производит итерирование по свойствам объектов в итерируемой цепочке прототипа объекта. Свойства объекта перечисляются первыми, затем свойства их непосредственных прототипов, затем свойства прототипов прототипов и так далее. Выражение for..in не перичисляет одно и то же имя свойства дважды. Если объект child имеет прототип parent и в обоих имеется свойство prop, то выражение for..in, примененное для child, перичисляет prop для child, но игнорирует аналогичное свойство в parent.
Фигурные скобки ({}), применяемые для указания границ блока выражений, исполняемых в цикле for..in необязательны, если имеется только одно выражение.
Если вы записываете цикл for..in в файл классов (внешний файл AS), то члены экземпляра не доступны для зацикливания, зато статические члены доступны. Однако, если вы запишите цикл for..in в файл FLA для экземпляра класса, то члены экземпляра будут доступны, а статические нет.
Следующий пример показывает использование for..in для итерирования по свойствам объекта:
var myObject:Object = {name:"Тара", age:27, city:"Сан Франциско"};for (var name in myObject) {trace("myObject."+name+" = "+myObject[name]);}//в окне output myObject.name = Тара myObject.age = 27 myObject.city = Сан Франциско
Следующий пример показывает использование for..in для итерирования по элементам массива:
var myArray:Array = new Array("один", "два", "три");
for (var index in myArray)
trace("myArray["+index+"] = " + myArray[index]);
// в окне output:
myArray[2] = один
myArray[1] = два
myArray[0] = три
Следующий пример использует оператор typeof в цикле for..in для итерирования по заданному типу дочерних объектов:
for (var name in this) {
if (typeof (this[name]) == "movieclip") {
trace("Имеется дочерний мувиклип с именем "+name);
}
}
Замечание: Если имеется несколько мувиклипов, то будут выведены имена экземпляров этих клипов.
Следующий пример перечисляет потомков мувиклипа и устанавливает проигрывание в каждом из них на кадр 2. Мувиклип RadioButtonGroup является родительским с несколькими потомками: _RedRadioButton_, _GreenRadioButton_ и _BlueRadioButton.
for (var name in RadioButtonGroup) {
RadioButtonGroup[name].gotoAndStop(2);
}
| Посмотреть комментарии LiveDocs | Предыдущая | Следующая | Оглавление | |